package com.znfeiche.server.common;

import com.znfeiche.common.ServletRequest;
import com.znfeiche.common.ServletResponse;
import com.znfeiche.exception.BusinessException;

/**
 * 视图解析器
 * 		负责处理视图名，会依据视图名
 * 　　生成对应的地址，然后转发或者重定向到
 * 	   对应的地址。
 * 	
 *
 */
public class ViewResolver {
	public void processView(String viewName,
			ServletRequest request,
			ServletResponse response) 
					throws BusinessException{
		/*
		 * 查看视图名是否以"redirect:"开头，如果是，
		 * 则重定向，否则转发。
		 */
		if(viewName.startsWith("redirect:")){
			String path = 
					viewName.substring(
							"redirect:".length());
			String contextPath = 
					request.getContextPath();
			//生成重定向地址
			String redirectPath = 
					contextPath + "/" + path;
			//重定向
			response.sendRedirect(redirectPath);
		}else{
			/*
			 * 视图名与jsp的对应关系:
			 * "/WEB-INF/" + 视图名 + ".jsp",
			 * 比如,视图名为"hello"，则对应的jsp是
			 * "/WEB-INF/hello.jsp"。
			 */
			String jspPath = "/WEB-INF/" 
					+ viewName + ".jsp";
			request.getRequestDispatcher(jspPath)
			.forward(request, response);
		}
		
	}
}






